package com.qinglei.recoup.hmp.service;

import com.qinglei.recoup.common.domain.CommonRes;
import com.qinglei.recoup.hmp.pojo.vo.HmpSleepReportMoreVO;
import com.qinglei.recoup.hmp.pojo.vo.healthReport.HealthReportDayVo;
import com.qinglei.recoup.hmp.pojo.vo.healthReport.TopVo;
import com.qinglei.recoup.system.domain.RealTimeMonitoring;
import com.qinglei.recoup.system.domain.VitalSignsAlarm;
import com.qinglei.recoup.system.pojo.HealthVO;
import com.qinglei.recoup.system.pojo.MonitorInfoTreeVO;

import java.util.List;

/**
 * @author superman
 * @date 2022/6/6$ 21:22$
 */
public interface QingLeiHmpGqqService {


    /**
     * 设备sn绑定事件
     *
     * @param sn 设备sn号
     * @return 绑定结果
     */
    CommonRes<Object> deviceSnBingBed(String sn, String type, String buildName, String floorName, String roomName, String bedName);

    /**
     * 设备sn解绑事件
     *
     * @param sn 设备sn号
     * @return 解绑结果
     */
    CommonRes<Object> deviceSnDeBingBed(String sn);

    /**
     * 判断设备sn号是否存在
     *
     * @param sn sn 设备sn号
     * @return 判定结果
     */
    CommonRes<Object> deviceSnIsExist(String sn);

    /**
     * 二开 - 基于 设备sn 日期 查 日报告
     *
     * @param sn        设备sn
     * @param startDate 查询开始日期
     * @param endDate   查询结束日期
     * @return 单日睡眠报告对象-定制版
     */
    CommonRes<List<HealthReportDayVo>> getsleepReportOneDay(String[] sn, String startDate, String endDate);


    /**
     * 二开 - 基于 设备sn 日期 查 多日报告
     *
     * @param sn        设备sn
     * @param startDate 查询开始日期
     * @param endDate   查询结束日期
     * @return 多日睡眠报告对象-定制版
     */
    CommonRes<List<HmpSleepReportMoreVO>> getsleepReportMoreDay(String[] sn, String startDate, String endDate);

    /**
     * 情绪指数排行榜
     *
     * @param snList 设备sn列表
     * @return
     */
    CommonRes<List<TopVo>> queryMoraleTopList(int offset, String[] snList);

    /**
     * 跌倒风险指数排行榜
     *
     * @param snList 设备sn列表
     * @return
     */
    CommonRes<List<TopVo>> queryFailTopList(int offset, String[] snList);

    /**
     * 活力指数排行榜
     *
     * @param snList 设备sn列表
     * @return
     */
    CommonRes<List<TopVo>> queryVitalityTopList(int offset, String[] snList);

    /**
     * 查询用户的健康数据列表
     *
     * @param snList    设备sn集合
     * @param startDate
     * @param endDate
     * @return
     */
    List<HealthVO> searchHealthList(String[] snList, String startDate, String endDate);

    /**
     * 设备生命体征报警阈值-批量查询
     *
     * @param snList 设备sn集合
     * @return
     */
    CommonRes<List<VitalSignsAlarm>> selectVitalSignsAlarm(String[] snList);

    /**
     * 设备生命体征报警阈值-批量修改
     *
     * @param vitalSignsAlarmList
     * @return
     */
    CommonRes<Object> updateVitalSignsAlarm(List<VitalSignsAlarm> vitalSignsAlarmList);

    /**
     * 生命体征报警阈值-查询默认值
     */
    CommonRes<List<VitalSignsAlarm>> defaultVitalSignsAlarm();

    /**
     * 呼吸/心跳 阈值设置-批量查询
     *
     * @param snList
     * @return
     */
    CommonRes<List<RealTimeMonitoring>> selectRealTimeMonitoring(String[] snList);

    /**
     * 呼吸/心跳 阈值设置-批量修改
     *
     * @param realTimeMonitoringList
     * @return
     */
    CommonRes<Object> updateRealTimeMonitoring(List<RealTimeMonitoring> realTimeMonitoringList);

    /**
     * 呼吸/心跳 阈值设置-查询默认值
     */
    CommonRes<List<RealTimeMonitoring>> defaultRealTimeMonitoring();

    /**
     * 查指定设备的配置树
     * @param sn
     * @return
     */
    List<MonitorInfoTreeVO> getMonitorInfoTree(String sn);
}
